package com.zenithmind.news.pojo.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.zenithmind.common.base.BaseEntity;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.time.LocalDateTime;

/**
 * 推送记录实体类
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("news_push_record")
@Schema(description = "推送记录实体")
public class PushRecord extends BaseEntity {

    /**
     * 用户ID
     */
    @Schema(description = "用户ID")
    private String userId;

    /**
     * 新闻ID
     */
    @Schema(description = "新闻ID")
    private String newsId;

    /**
     * 推送类型（1-实时推送，2-定时推送，3-批量推送）
     */
    @Schema(description = "推送类型（1-实时推送，2-定时推送，3-批量推送）")
    private Integer pushType;

    /**
     * 推送渠道（1-WebSocket，2-邮件，3-短信，4-APP推送）
     */
    @Schema(description = "推送渠道（1-WebSocket，2-邮件，3-短信，4-APP推送）")
    private Integer pushChannel;

    /**
     * 推送状态（1-待推送，2-推送中，3-推送成功，4-推送失败）
     */
    @Schema(description = "推送状态（1-待推送，2-推送中，3-推送成功，4-推送失败）")
    private Integer status;

    /**
     * 推送内容
     */
    @Schema(description = "推送内容")
    private String content;

    /**
     * 推送标题
     */
    @Schema(description = "推送标题")
    private String title;

    /**
     * 推送目标（邮箱、手机号等）
     */
    @Schema(description = "推送目标（邮箱、手机号等）")
    private String target;

    /**
     * 推送时间
     */
    @Schema(description = "推送时间")
    private LocalDateTime pushTime;

    /**
     * 计划推送时间
     */
    @Schema(description = "计划推送时间")
    private LocalDateTime scheduledTime;

    /**
     * 重试次数
     */
    @Schema(description = "重试次数")
    private Integer retryCount;

    /**
     * 最大重试次数
     */
    @Schema(description = "最大重试次数")
    private Integer maxRetry;

    /**
     * 错误信息
     */
    @Schema(description = "错误信息")
    private String errorMessage;

    /**
     * 推送响应
     */
    @Schema(description = "推送响应")
    private String response;

    /**
     * 是否已读（0-未读，1-已读）
     */
    @Schema(description = "是否已读（0-未读，1-已读）")
    private Integer isRead;

    /**
     * 阅读时间
     */
    @Schema(description = "阅读时间")
    private LocalDateTime readTime;

    /**
     * 推送批次ID
     */
    @Schema(description = "推送批次ID")
    private String batchId;

    /**
     * 推送优先级（1-低，2-中，3-高，4-紧急）
     */
    @Schema(description = "推送优先级（1-低，2-中，3-高，4-紧急）")
    private Integer priority;
}
